#! /usr/bin/env python

# Copyright (c) 2010, Stephan Weiss, ASL, ETH Zurich, Switzerland
# You can contact the author at <stephan dot weiss at ieee dot org>

# All rights reserved.

# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of ETHZ-ASL nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.

# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL ETHZ-ASL BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


PACKAGE='ssf_core'

#from driver_base.msg import SensorLevels
from dynamic_reconfigure.parameter_generator_catkin import *

gen = ParameterGenerator()

# @todo Think about levels. Setting most of these to STOP to guarantee atomicity.
# @todo Double check these ranges, defaults

INIT_FILTER     = gen.const("INIT_FILTER",              int_t, 0x00000001, "init_filter")
MISC            = gen.const("MISC",                     int_t, 0x00000002, "misc")
SET_HEIGHT      = gen.const("SET_HEIGHT",              int_t, 0x00000004, "set_height")

#       Name                 Type      Reconfiguration level                Description   Default   Min   Max
gen.add("init_filter",       bool_t,   INIT_FILTER["value"],                    "call filter init using defined scale",                    False)
gen.add("scale_init",        double_t, MISC["value"],                           "value for initial scale",          1,      	0.001,		30)
gen.add("fixed_scale",       bool_t,   MISC["value"],                           "fix scale",                    False)
gen.add("fixed_bias",        bool_t,   MISC["value"],                           "fix biases",                    False)
gen.add("fixed_calib",        bool_t,   MISC["value"],                          "fix calibration states",                    False)
gen.add("noise_acc",         double_t, MISC["value"],                           "noise accelerations (std. dev)",           0.0083,   	1.0e-4, 	0.5)
gen.add("noise_accbias",     double_t, MISC["value"],                           "noise acceleration bias  (std. dev)",       0.00083, 	1.0e-7, 	0.1)
gen.add("noise_gyr",         double_t, MISC["value"],                           "noise gyros (std. dev)",           0.0013,  	1.0e-4,   	0.5)
gen.add("noise_gyrbias",     double_t, MISC["value"],                           "noise gyro biases  (std. dev)",       0.00013, 	1.0e-7, 	0.1)
gen.add("noise_scale",       double_t, MISC["value"],                           "noise scale (std. dev)",         0.0,		0, 	        10.0)
gen.add("noise_qwv",         double_t, MISC["value"],                           "noise qwv (std. dev)",           0.0,        0,          10.0)
gen.add("noise_qci",         double_t, MISC["value"],                           "noise qci (std. dev)",           0.0,        0,          10.0)
gen.add("noise_pic",         double_t, MISC["value"],                           "noise pic (std. dev)",           0.0,        0,          10.0)
gen.add("delay",             double_t, MISC["value"],                           "fix delay in seconds",               0.03,       -2.0,     2.0)
gen.add("set_height",        bool_t,   SET_HEIGHT["value"],                     "call filter init using defined height",                    False)
gen.add("height",            double_t, MISC["value"],                           "height in m for init",         1,          0.1,       20)
gen.add("meas_noise1",       double_t, MISC["value"],                           "noise for measurement sensor (std. dev)",         0.01,          0,       10)
gen.add("meas_noise2",       double_t, MISC["value"],                           "noise for measurement sensor (std. dev)",         0.01,          0,       10)


exit(gen.generate(PACKAGE, "Config", "SSF_Core"))
